using System;
using System.Collections.Generic;
using System.Text;
using System.Reflection;

namespace PluginManager
{
    /// <summary>
    /// This Class Attribute is required for GPCore to reconize that 
    /// it is a plugin whether its a Protocol or a CoreEventListener
    /// </summary>
    [global::System.AttributeUsage(AttributeTargets.Class, Inherited = true, AllowMultiple = true)]
    [Serializable()]
    public sealed class PluginAttribute : Attribute
    {
        readonly string _title, _vers, _dev, _comp, _desc;

        /// <summary>
        /// Creates a new PluginAttribute
        /// </summary>
        /// <param name="title">The title of the plugin</param>
        /// <param name="version">The version of the plugin</param>
        /// <param name="developers">The developers of the plugin</param>
        /// <param name="company">The company that owns the plugin</param>
        /// <param name="description">A short description of the plugin</param>
        public PluginAttribute(string title, string version, string developers, string company, string description)
        {
            this._comp = company;
            this._desc = description;
            this._dev = developers;
            this._title = title;
            this._vers = version;

            // TODO: Implement code here.
        }
        /// <summary>
        /// The title of the plugin
        /// </summary>
        public string Title
        {
            get
            {
                return this._title;
            }
        }
        /// <summary>
        /// The version of the plugin
        /// </summary>
        public string Version
        {
            get
            {
                return this._vers;
            }
        }
        /// <summary>
        /// A short description of the plugin
        /// </summary>
        public string Description
        {
            get
            {
                return this._desc;
            }
        }
        /// <summary>
        /// The company that developed the plugin
        /// </summary>
        public string Company
        {
            get
            {
                return this._comp;
            }
        }
        /// <summary>
        /// The developers of the plugin
        /// </summary>
        public string Developers
        {
            get
            {
                return this._dev;
            }
        }
    }

}